diff --git a/discord/__main__.py b/discord/__main__.py index ed34bdf42a..b9b995500a 100644 --- a/discord/__main__.py +++ b/discord/__main__.py @@ -28,7 +28,6 @@ import platform import sys from pathlib import Path -from typing import Tuple import aiohttp @@ -352,7 +351,7 @@ def add_newcog_args(subparser: argparse._SubParsersAction) -> None: ) -def parse_args() -> Tuple[argparse.ArgumentParser, argparse.Namespace]: +def parse_args() -> tuple[argparse.ArgumentParser, argparse.Namespace]: parser = argparse.ArgumentParser( prog="discord", description="Tools for helping with Pycord" ) diff --git a/discord/abc.py b/discord/abc.py index 4b6ca924aa..0d49647911 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -28,13 +28,11 @@ import asyncio import copy import time +from collections.abc import Callable, Iterable, Sequence from typing import ( TYPE_CHECKING, Any, - Callable, - Iterable, Protocol, - Sequence, TypeAlias, TypeVar, Union, diff --git a/discord/audit_logs.py b/discord/audit_logs.py index b2f6a72393..e944149fd6 100644 --- a/discord/audit_logs.py +++ b/discord/audit_logs.py @@ -26,8 +26,9 @@ from __future__ import annotations import datetime +from collections.abc import Callable, Generator from functools import cached_property -from typing import TYPE_CHECKING, Any, Callable, ClassVar, Generator, TypeVar +from typing import TYPE_CHECKING, Any, ClassVar, TypeVar from . import enums, utils from .asset import Asset diff --git a/discord/backoff.py b/discord/backoff.py index 819c7d3cee..078f14e218 100644 --- a/discord/backoff.py +++ b/discord/backoff.py @@ -27,7 +27,8 @@ import random import time -from typing import Callable, Generic, Literal, TypeVar, overload +from collections.abc import Callable +from typing import Generic, Literal, TypeVar, overload T = TypeVar("T", bool, Literal[True], Literal[False]) diff --git a/discord/bot.py b/discord/bot.py index 6c3632d9eb..1102fde2b1 100644 --- a/discord/bot.py +++ b/discord/bot.py @@ -34,14 +34,11 @@ import sys import traceback from abc import ABC, abstractmethod +from collections.abc import Callable, Coroutine, Generator, Mapping from typing import ( TYPE_CHECKING, Any, - Callable, - Coroutine, - Generator, Literal, - Mapping, TypeVar, ) diff --git a/discord/channel.py b/discord/channel.py index 2a6d5182ac..4714093e32 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -26,14 +26,11 @@ from __future__ import annotations import datetime +from collections.abc import Callable, Iterable, Mapping, Sequence from typing import ( TYPE_CHECKING, Any, - Callable, - Iterable, - Mapping, NamedTuple, - Sequence, TypeVar, overload, ) diff --git a/discord/client.py b/discord/client.py index f227ccf1df..3bc99d533e 100644 --- a/discord/client.py +++ b/discord/client.py @@ -30,14 +30,11 @@ import signal import sys import traceback +from collections.abc import Callable, Coroutine, Generator, Sequence from types import TracebackType from typing import ( TYPE_CHECKING, Any, - Callable, - Coroutine, - Generator, - Sequence, TypeVar, ) diff --git a/discord/cog.py b/discord/cog.py index 5fbe6e61a4..d514e1febf 100644 --- a/discord/cog.py +++ b/discord/cog.py @@ -31,18 +31,16 @@ import pathlib import sys import types -from collections.abc import Generator, Mapping +from collections.abc import Callable, Generator, Mapping from typing import ( TYPE_CHECKING, Any, - Callable, ClassVar, + TypeGuard, TypeVar, overload, ) -from typing_extensions import TypeGuard - import discord.utils from . import errors diff --git a/discord/commands/context.py b/discord/commands/context.py index e97f19fa0f..b7206d0946 100644 --- a/discord/commands/context.py +++ b/discord/commands/context.py @@ -32,7 +32,7 @@ from discord.webhook.async_ import Webhook if TYPE_CHECKING: - from typing import Awaitable, Callable + from collections.abc import Awaitable, Callable from typing_extensions import ParamSpec diff --git a/discord/commands/core.py b/discord/commands/core.py index f122117558..ac4a4c4467 100644 --- a/discord/commands/core.py +++ b/discord/commands/core.py @@ -30,21 +30,24 @@ import functools import inspect import re -import sys import types from collections import OrderedDict +from collections.abc import Callable, Coroutine, Generator from enum import Enum from typing import ( TYPE_CHECKING, + Annotated, Any, - Callable, - Coroutine, - Generator, Generic, + Literal, TypeVar, Union, + get_args, + get_origin, ) +from typing_extensions import Self + from ..channel import PartialMessageable, _threaded_guild_channel_factory from ..enums import Enum as DiscordEnum from ..enums import ( @@ -69,11 +72,6 @@ from .context import ApplicationContext, AutocompleteContext from .options import Option, OptionChoice -if sys.version_info >= (3, 11): - from typing import Annotated, Literal, Self, get_args, get_origin -else: - from typing_extensions import Annotated, Literal, Self, get_args, get_origin - __all__ = ( "_BaseCommand", "ApplicationCommand", @@ -90,7 +88,9 @@ ) if TYPE_CHECKING: - from typing_extensions import Concatenate, Never, ParamSpec + from typing import Concatenate + + from typing_extensions import Never, ParamSpec from .. import Permissions from ..bot import C diff --git a/discord/commands/options.py b/discord/commands/options.py index 6567d0c4e7..a7d7d682ce 100644 --- a/discord/commands/options.py +++ b/discord/commands/options.py @@ -35,7 +35,6 @@ Any, Literal, Optional, - Type, TypeVar, Union, get_args, @@ -72,22 +71,22 @@ from ..user import User InputType = Union[ - Type[str], - Type[bool], - Type[int], - Type[float], - Type[GuildChannel], - Type[Thread], - Type[Member], - Type[User], - Type[Attachment], - Type[Role], - Type[Mentionable], + type[str], + type[bool], + type[int], + type[float], + type[GuildChannel], + type[Thread], + type[Member], + type[User], + type[Attachment], + type[Role], + type[Mentionable], SlashCommandOptionType, Converter, - Type[Converter], - Type[Enum], - Type[DiscordEnum], + type[Converter], + type[Enum], + type[DiscordEnum], ] AutocompleteReturnType = Union[ diff --git a/discord/commands/permissions.py b/discord/commands/permissions.py index daf633b05a..c1ed4f481e 100644 --- a/discord/commands/permissions.py +++ b/discord/commands/permissions.py @@ -23,7 +23,7 @@ DEALINGS IN THE SOFTWARE. """ -from typing import Callable +from collections.abc import Callable from ..enums import InteractionContextType from ..permissions import Permissions diff --git a/discord/components.py b/discord/components.py index d6e1eb89a8..cc1d2f76ac 100644 --- a/discord/components.py +++ b/discord/components.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, ClassVar, Iterator, TypeVar, overload +from collections.abc import Iterator +from typing import TYPE_CHECKING, Any, ClassVar, TypeVar, overload from .asset import AssetMixin from .colour import Colour diff --git a/discord/embeds.py b/discord/embeds.py index fbdf35c619..31bdd959eb 100644 --- a/discord/embeds.py +++ b/discord/embeds.py @@ -26,7 +26,8 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Any, Mapping, TypeVar +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar from . import utils from .colour import Colour diff --git a/discord/emoji.py b/discord/emoji.py index 39a224b18a..e694e846b9 100644 --- a/discord/emoji.py +++ b/discord/emoji.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Iterator, Literal +from collections.abc import Iterator +from typing import TYPE_CHECKING, Any, Literal from .asset import Asset, AssetMixin from .partial_emoji import PartialEmoji, _EmojiTag diff --git a/discord/ext/bridge/core.py b/discord/ext/bridge/core.py index e61daa576f..e2c40299ad 100644 --- a/discord/ext/bridge/core.py +++ b/discord/ext/bridge/core.py @@ -26,8 +26,8 @@ from __future__ import annotations import inspect -from collections.abc import Iterator -from typing import TYPE_CHECKING, Any, Callable +from collections.abc import Callable, Iterator +from typing import TYPE_CHECKING, Any import discord.commands.options from discord import ( diff --git a/discord/ext/commands/_types.py b/discord/ext/commands/_types.py index d3f0336471..643dfd7ab0 100644 --- a/discord/ext/commands/_types.py +++ b/discord/ext/commands/_types.py @@ -23,7 +23,8 @@ DEALINGS IN THE SOFTWARE. """ -from typing import TYPE_CHECKING, Any, Callable, Coroutine, TypeVar, Union +from collections.abc import Callable, Coroutine +from typing import TYPE_CHECKING, Any, TypeVar, Union if TYPE_CHECKING: from .cog import Cog diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py index d348b6c536..0b050a7b8f 100644 --- a/discord/ext/commands/bot.py +++ b/discord/ext/commands/bot.py @@ -29,7 +29,8 @@ import collections.abc import sys import traceback -from typing import TYPE_CHECKING, Any, Callable, Coroutine, Iterable, TypeVar +from collections.abc import Callable, Coroutine, Iterable +from typing import TYPE_CHECKING, Any, TypeVar import discord diff --git a/discord/ext/commands/cog.py b/discord/ext/commands/cog.py index 871d3e816e..ac93818475 100644 --- a/discord/ext/commands/cog.py +++ b/discord/ext/commands/cog.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable, Generator, TypeVar +from collections.abc import Callable, Generator +from typing import TYPE_CHECKING, Any, TypeVar import discord diff --git a/discord/ext/commands/converter.py b/discord/ext/commands/converter.py index ca5a109f3f..25124379e0 100644 --- a/discord/ext/commands/converter.py +++ b/discord/ext/commands/converter.py @@ -27,12 +27,11 @@ import inspect import re +from collections.abc import Iterable from typing import ( TYPE_CHECKING, Any, Generic, - Iterable, - List, Literal, Protocol, TypeVar, @@ -1023,7 +1022,7 @@ def repl(match: re.Match) -> str: return discord.utils.escape_mentions(result) -class Greedy(List[T]): +class Greedy(list[T]): r"""A special converter that greedily consumes arguments until it can't. As a consequence of this behaviour, most input errors are silently discarded, since it is used as an indicator of when to stop parsing. @@ -1100,7 +1099,7 @@ def get_converter(param: inspect.Parameter) -> Any: return converter -_GenericAlias = type(List[T]) +_GenericAlias = type(list[T]) def is_generic_type(tp: Any, *, _GenericAlias: type = _GenericAlias) -> bool: diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py index 7504eed7c8..c2fe07b702 100644 --- a/discord/ext/commands/cooldowns.py +++ b/discord/ext/commands/cooldowns.py @@ -28,7 +28,8 @@ import asyncio import time from collections import deque -from typing import TYPE_CHECKING, Any, Callable, Deque, TypeVar +from collections.abc import Callable +from typing import TYPE_CHECKING, Any, Deque, TypeVar import discord.abc from discord.enums import Enum diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py index 4a58ecfca3..33fd62f0c0 100644 --- a/discord/ext/commands/core.py +++ b/discord/ext/commands/core.py @@ -30,11 +30,10 @@ import functools import inspect import types +from collections.abc import Callable, Generator from typing import ( TYPE_CHECKING, Any, - Callable, - Generator, Generic, Literal, TypeVar, @@ -67,7 +66,9 @@ from .errors import * if TYPE_CHECKING: - from typing_extensions import Concatenate, ParamSpec, TypeGuard + from typing import Concatenate, TypeGuard + + from typing_extensions import ParamSpec from discord.message import Message diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py index c768fd7c00..8263af7150 100644 --- a/discord/ext/commands/errors.py +++ b/discord/ext/commands/errors.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable +from collections.abc import Callable +from typing import TYPE_CHECKING, Any from discord.errors import ClientException, DiscordException diff --git a/discord/ext/commands/flags.py b/discord/ext/commands/flags.py index ec218b891f..0c2b925b74 100644 --- a/discord/ext/commands/flags.py +++ b/discord/ext/commands/flags.py @@ -28,8 +28,10 @@ import inspect import re import sys +from collections.abc import Iterator from dataclasses import dataclass, field -from typing import TYPE_CHECKING, Any, Iterator, Literal, Pattern, TypeVar, Union +from re import Pattern +from typing import TYPE_CHECKING, Any, Literal, TypeVar, Union from discord.utils import ( MISSING, diff --git a/discord/ext/pages/pagination.py b/discord/ext/pages/pagination.py index ab40be08ec..0d9218b581 100644 --- a/discord/ext/pages/pagination.py +++ b/discord/ext/pages/pagination.py @@ -25,7 +25,6 @@ from __future__ import annotations import contextlib -from typing import List import discord from discord.errors import DiscordException @@ -935,7 +934,7 @@ def get_page_content( return Page(content=None, embeds=[], files=[page]) elif isinstance(page, discord.ui.View): return Page(content=None, embeds=[], files=[], custom_view=page) - elif isinstance(page, List): + elif isinstance(page, list): if all(isinstance(x, discord.Embed) for x in page): return Page(content=None, embeds=page, files=[]) if all(isinstance(x, discord.File) for x in page): diff --git a/discord/ext/tasks/__init__.py b/discord/ext/tasks/__init__.py index 6bb719c67f..c1d1e72274 100644 --- a/discord/ext/tasks/__init__.py +++ b/discord/ext/tasks/__init__.py @@ -31,8 +31,8 @@ import inspect import sys import traceback -from collections.abc import Sequence -from typing import Any, Awaitable, Callable, Generic, TypeVar, cast +from collections.abc import Awaitable, Callable, Sequence +from typing import Any, Generic, TypeVar, cast import aiohttp diff --git a/discord/flags.py b/discord/flags.py index 53c1ccd98b..875276df35 100644 --- a/discord/flags.py +++ b/discord/flags.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import Any, Callable, ClassVar, Iterator, TypeVar, overload +from collections.abc import Callable, Iterator +from typing import Any, ClassVar, TypeVar, overload from .enums import UserFlags diff --git a/discord/guild.py b/discord/guild.py index 4ecbfe57bd..64b44ee349 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -28,15 +28,13 @@ import copy import datetime import unicodedata +from collections.abc import Sequence from typing import ( TYPE_CHECKING, Any, ClassVar, - List, NamedTuple, Optional, - Sequence, - Tuple, TypeVar, Union, overload, @@ -134,7 +132,7 @@ GuildChannel = Union[ VoiceChannel, StageChannel, TextChannel, ForumChannel, CategoryChannel ] - ByCategoryItem = Tuple[Optional[CategoryChannel], List[GuildChannel]] + ByCategoryItem = tuple[Optional[CategoryChannel], list[GuildChannel]] T = TypeVar("T") diff --git a/discord/http.py b/discord/http.py index fc6ffb22c3..40ebcd7c1f 100644 --- a/discord/http.py +++ b/discord/http.py @@ -29,13 +29,10 @@ import logging import sys import weakref +from collections.abc import AsyncGenerator, Coroutine, Iterable, Sequence from typing import ( TYPE_CHECKING, Any, - AsyncGenerator, - Coroutine, - Iterable, - Sequence, TypeVar, ) from urllib.parse import quote as _uriquote diff --git a/discord/interactions.py b/discord/interactions.py index 7d076b3636..f6af21d733 100644 --- a/discord/interactions.py +++ b/discord/interactions.py @@ -27,7 +27,8 @@ import asyncio import datetime -from typing import TYPE_CHECKING, Any, Coroutine, Union, overload +from collections.abc import Coroutine +from typing import TYPE_CHECKING, Any, Union, overload from typing_extensions import deprecated diff --git a/discord/iterators.py b/discord/iterators.py index 7813f812e9..c2e1de329e 100644 --- a/discord/iterators.py +++ b/discord/iterators.py @@ -27,14 +27,10 @@ import asyncio import datetime +from collections.abc import AsyncIterator, Awaitable, Callable, Generator from typing import ( TYPE_CHECKING, Any, - AsyncIterator, - Awaitable, - Callable, - Generator, - List, TypeVar, Union, ) @@ -140,7 +136,7 @@ def _identity(x): return x -class _ChunkedAsyncIterator(_AsyncIterator[List[T]]): +class _ChunkedAsyncIterator(_AsyncIterator[list[T]]): def __init__(self, iterator, max_size): self.iterator = iterator self.max_size = max_size diff --git a/discord/message.py b/discord/message.py index 1781bf45f1..3a0c74d2e4 100644 --- a/discord/message.py +++ b/discord/message.py @@ -28,14 +28,12 @@ import datetime import io import re +from collections.abc import AsyncGenerator, Callable, Sequence from os import PathLike from typing import ( TYPE_CHECKING, Any, - AsyncGenerator, - Callable, ClassVar, - Sequence, TypeVar, Union, overload, diff --git a/discord/oggparse.py b/discord/oggparse.py index 4901c38b77..70dc7f2e25 100644 --- a/discord/oggparse.py +++ b/discord/oggparse.py @@ -26,7 +26,8 @@ from __future__ import annotations import struct -from typing import IO, TYPE_CHECKING, ClassVar, Generator +from collections.abc import Generator +from typing import IO, TYPE_CHECKING, ClassVar from .errors import DiscordException diff --git a/discord/opus.py b/discord/opus.py index f6c42fdd04..35f3e665aa 100644 --- a/discord/opus.py +++ b/discord/opus.py @@ -33,7 +33,8 @@ import os.path import struct import sys -from typing import TYPE_CHECKING, Any, Callable, Literal, TypedDict, TypeVar +from collections.abc import Callable +from typing import TYPE_CHECKING, Any, Literal, TypedDict, TypeVar try: import davey diff --git a/discord/permissions.py b/discord/permissions.py index 2e7bcc392d..3d3ce83c9c 100644 --- a/discord/permissions.py +++ b/discord/permissions.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable, ClassVar, Iterator, TypeVar +from collections.abc import Callable, Iterator +from typing import TYPE_CHECKING, Any, ClassVar, TypeVar from .flags import BaseFlags, alias_flag_value, fill_with_flags, flag_value diff --git a/discord/player.py b/discord/player.py index f80bba9c1f..007bd7e8d7 100644 --- a/discord/player.py +++ b/discord/player.py @@ -37,8 +37,9 @@ import threading import time import warnings +from collections.abc import Callable from math import floor -from typing import IO, TYPE_CHECKING, Any, Callable, Generic, TypeVar +from typing import IO, TYPE_CHECKING, Any, Generic, TypeVar from .enums import SpeakingState from .errors import ClientException diff --git a/discord/shard.py b/discord/shard.py index fd6a08a047..6d5dfc4dbf 100644 --- a/discord/shard.py +++ b/discord/shard.py @@ -27,7 +27,8 @@ import asyncio import logging -from typing import TYPE_CHECKING, Any, Callable, TypeVar +from collections.abc import Callable +from typing import TYPE_CHECKING, Any, TypeVar import aiohttp diff --git a/discord/soundboard.py b/discord/soundboard.py index 6fae037090..d320cc2ab3 100644 --- a/discord/soundboard.py +++ b/discord/soundboard.py @@ -24,7 +24,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Coroutine +from collections.abc import Coroutine +from typing import TYPE_CHECKING, Any from typing_extensions import override diff --git a/discord/state.py b/discord/state.py index 574c973c52..759fa26a66 100644 --- a/discord/state.py +++ b/discord/state.py @@ -32,13 +32,11 @@ import logging import os from collections import OrderedDict, deque +from collections.abc import Callable, Coroutine, Sequence from typing import ( TYPE_CHECKING, Any, - Callable, - Coroutine, Deque, - Sequence, TypeVar, Union, ) diff --git a/discord/threads.py b/discord/threads.py index 8d7781770a..2a9a4bb6d5 100644 --- a/discord/threads.py +++ b/discord/threads.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Callable, Iterable +from collections.abc import Callable, Iterable +from typing import TYPE_CHECKING from .abc import Messageable, _purge_messages_helper from .enums import ( diff --git a/discord/types/interactions.py b/discord/types/interactions.py index 3f45e35c19..da1c345f64 100644 --- a/discord/types/interactions.py +++ b/discord/types/interactions.py @@ -25,7 +25,7 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Dict, Literal, Union +from typing import TYPE_CHECKING, Literal, Union from ..permissions import Permissions from .channel import ChannelType @@ -272,7 +272,7 @@ class EditApplicationCommand(TypedDict): ApplicationIntegrationType = Literal[0, 1] _StringApplicationIntegrationType = Literal["0", "1"] -AuthorizingIntegrationOwners = Dict[_StringApplicationIntegrationType, Snowflake] +AuthorizingIntegrationOwners = dict[_StringApplicationIntegrationType, Snowflake] class InteractionCallbackResponse(TypedDict): diff --git a/discord/types/snowflake.py b/discord/types/snowflake.py index 1d28831570..3b89d29323 100644 --- a/discord/types/snowflake.py +++ b/discord/types/snowflake.py @@ -23,7 +23,7 @@ DEALINGS IN THE SOFTWARE. """ -from typing import List, Union +from typing import Union Snowflake = Union[str, int] -SnowflakeList = List[Snowflake] +SnowflakeList = list[Snowflake] diff --git a/discord/ui/action_row.py b/discord/ui/action_row.py index a947f33f1e..730a1b2905 100644 --- a/discord/ui/action_row.py +++ b/discord/ui/action_row.py @@ -24,9 +24,9 @@ from __future__ import annotations -from collections.abc import Sequence +from collections.abc import Iterator, Sequence from functools import partial -from typing import TYPE_CHECKING, ClassVar, Iterator, Literal, TypeVar, overload +from typing import TYPE_CHECKING, ClassVar, Literal, TypeVar, overload from ..components import ActionRow as ActionRowComponent from ..components import SelectDefaultValue, SelectOption, _component_factory diff --git a/discord/ui/button.py b/discord/ui/button.py index 7ba2a3a34e..a8ad878c38 100644 --- a/discord/ui/button.py +++ b/discord/ui/button.py @@ -27,7 +27,8 @@ import inspect import os -from typing import TYPE_CHECKING, Callable, TypeVar +from collections.abc import Callable +from typing import TYPE_CHECKING, TypeVar from ..components import Button as ButtonComponent from ..enums import ButtonStyle, ComponentType diff --git a/discord/ui/container.py b/discord/ui/container.py index 0ebd72a2b4..480e749f34 100644 --- a/discord/ui/container.py +++ b/discord/ui/container.py @@ -24,7 +24,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Iterator, TypeVar +from collections.abc import Iterator +from typing import TYPE_CHECKING, TypeVar from ..colour import Colour from ..components import Container as ContainerComponent diff --git a/discord/ui/core.py b/discord/ui/core.py index 21bb16871a..c98a2265aa 100644 --- a/discord/ui/core.py +++ b/discord/ui/core.py @@ -26,8 +26,9 @@ import asyncio import time +from collections.abc import Callable from itertools import groupby -from typing import TYPE_CHECKING, Any, Callable +from typing import TYPE_CHECKING, Any from ..utils import find, get from .item import Item, ItemCallbackType diff --git a/discord/ui/item.py b/discord/ui/item.py index 85132558bd..6236bb77fd 100644 --- a/discord/ui/item.py +++ b/discord/ui/item.py @@ -25,7 +25,8 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable, Coroutine, Generic, TypeVar +from collections.abc import Callable, Coroutine +from typing import TYPE_CHECKING, Any, Generic, TypeVar from ..interactions import Interaction diff --git a/discord/ui/label.py b/discord/ui/label.py index 69c519f0cd..720b02b226 100644 --- a/discord/ui/label.py +++ b/discord/ui/label.py @@ -24,8 +24,8 @@ from __future__ import annotations -from collections.abc import Sequence -from typing import TYPE_CHECKING, Iterator, Literal, TypeVar, overload +from collections.abc import Iterator, Sequence +from typing import TYPE_CHECKING, Literal, TypeVar, overload from ..components import ( CheckboxGroupOption, diff --git a/discord/ui/modal.py b/discord/ui/modal.py index 20704eb278..bb5fabc8ee 100644 --- a/discord/ui/modal.py +++ b/discord/ui/modal.py @@ -28,9 +28,10 @@ import os import sys import time +from collections.abc import Iterator from functools import partial from itertools import groupby -from typing import TYPE_CHECKING, Any, Iterator, TypeVar +from typing import TYPE_CHECKING, Any, TypeVar from ..enums import ComponentType from ..utils import _get_event_loop, find diff --git a/discord/ui/section.py b/discord/ui/section.py index 9b733999b7..f0a5f95ac0 100644 --- a/discord/ui/section.py +++ b/discord/ui/section.py @@ -24,8 +24,9 @@ from __future__ import annotations +from collections.abc import Iterator from functools import partial -from typing import TYPE_CHECKING, ClassVar, Iterator, TypeVar +from typing import TYPE_CHECKING, ClassVar, TypeVar from ..components import Section as SectionComponent from ..components import _component_factory diff --git a/discord/ui/select.py b/discord/ui/select.py index d6f5a105ca..df18c9385c 100644 --- a/discord/ui/select.py +++ b/discord/ui/select.py @@ -27,9 +27,9 @@ import inspect import os -from collections.abc import Sequence +from collections.abc import Callable, Sequence from functools import partial -from typing import TYPE_CHECKING, Any, Callable, Generic, Literal, overload +from typing import TYPE_CHECKING, Any, Generic, Literal, overload from typing_extensions import Self, TypeVar diff --git a/discord/ui/view.py b/discord/ui/view.py index 568240ffcf..fdc478b868 100644 --- a/discord/ui/view.py +++ b/discord/ui/view.py @@ -31,14 +31,13 @@ import os import sys import time +from collections.abc import Iterator, Sequence from functools import partial from itertools import groupby from typing import ( TYPE_CHECKING, Any, ClassVar, - Iterator, - Sequence, TypeVar, ) diff --git a/discord/utils.py b/discord/utils.py index d09551f508..8a8c4439b0 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -42,24 +42,26 @@ import warnings from base64 import b64encode from bisect import bisect_left +from collections.abc import ( + AsyncIterator, + Awaitable, + Callable, + Coroutine, + Iterable, + Iterator, + Mapping, + Sequence, +) from inspect import isawaitable as _isawaitable from inspect import signature as _signature from operator import attrgetter from typing import ( TYPE_CHECKING, Any, - AsyncIterator, - Awaitable, - Callable, - Coroutine, ForwardRef, Generic, - Iterable, - Iterator, Literal, - Mapping, Protocol, - Sequence, TypeVar, Union, overload, diff --git a/discord/voice/packets/core.py b/discord/voice/packets/core.py index c38fc9face..8fd82c232b 100644 --- a/discord/voice/packets/core.py +++ b/discord/voice/packets/core.py @@ -28,7 +28,7 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: - from typing_extensions import Final + from typing import Final OPUS_SILENCE: Final = b"\xf8\xff\xfe" diff --git a/discord/voice/packets/rtp.py b/discord/voice/packets/rtp.py index dd9520cf4e..cbee2e1c96 100644 --- a/discord/voice/packets/rtp.py +++ b/discord/voice/packets/rtp.py @@ -32,7 +32,7 @@ from .core import OPUS_SILENCE, Packet if TYPE_CHECKING: - from typing_extensions import Final + from typing import Final MAX_UINT_32 = 0xFFFFFFFF MAX_UINT_16 = 0xFFFF diff --git a/examples/app_commands/slash_options.py b/examples/app_commands/slash_options.py index 4a9eda93cc..be625738b1 100644 --- a/examples/app_commands/slash_options.py +++ b/examples/app_commands/slash_options.py @@ -47,7 +47,7 @@ async def hello( ) async def select_channel( ctx: discord.ApplicationContext, - channel: Union[discord.TextChannel, discord.VoiceChannel], + channel: discord.TextChannel | discord.VoiceChannel, ): await ctx.respond(f"Hi! You selected {channel.mention} channel.") diff --git a/examples/converters.py b/examples/converters.py index bbf0fb9e51..1d2359e944 100644 --- a/examples/converters.py +++ b/examples/converters.py @@ -1,7 +1,6 @@ # This example requires the 'members' privileged intent to use the Member converter, # and the 'message_content' privileged intent for prefixed commands. -from typing import Union import discord from discord.ext import commands @@ -90,9 +89,7 @@ async def notify(ctx: commands.Context, target: ChannelOrMemberConverter): @bot.command() -async def ignore( - ctx: commands.Context, target: Union[discord.Member, discord.TextChannel] -): +async def ignore(ctx: commands.Context, target: discord.Member | discord.TextChannel): # This command signature utilises the `typing.Union` typehint. # The `commands` framework attempts a conversion of each type in this Union *in order*. # So, it will attempt to convert whatever is passed to `target` to a `discord.Member` instance. diff --git a/examples/secret.py b/examples/secret.py index 7b0b77d06c..b78ce2e88d 100644 --- a/examples/secret.py +++ b/examples/secret.py @@ -1,7 +1,6 @@ # This example requires the 'members' privileged intent to use the Member converter, # and the 'message_content' privileged intent for prefixed commands. -from typing import Union import discord from discord.ext import commands @@ -25,9 +24,7 @@ async def secret(ctx: commands.Context): await ctx.send("Shh!", delete_after=5) -def create_overwrites( - ctx: commands.Context, *objects: Union[discord.Role, discord.Member] -): +def create_overwrites(ctx: commands.Context, *objects: discord.Role | discord.Member): """ This is just a helper function that creates the overwrites for the voice/text channels. @@ -65,7 +62,7 @@ def create_overwrites( async def text( ctx: commands.Context, name: str, - *objects: Union[discord.Role, discord.Member], + *objects: discord.Role | discord.Member, ): """ This makes a text channel with the passed name that @@ -90,7 +87,7 @@ async def text( async def voice( ctx: commands.Context, name: str, - *objects: Union[discord.Role, discord.Member], + *objects: discord.Role | discord.Member, ): """ This does the same thing as the `text` subcommand diff --git a/examples/views/tic_tac_toe.py b/examples/views/tic_tac_toe.py index 1d240c2356..19e5415bc9 100644 --- a/examples/views/tic_tac_toe.py +++ b/examples/views/tic_tac_toe.py @@ -1,6 +1,5 @@ # This example requires the 'message_content' privileged intent for prefixed commands. -from typing import List import discord from discord.ext import commands @@ -63,7 +62,7 @@ async def callback(self, interaction: discord.Interaction): class TicTacToe(discord.ui.View): # This tells the IDE or linter that all our children will be TicTacToeButtons. # This is not required. - children: List[TicTacToeButton] + children: list[TicTacToeButton] X = -1 O = 1 Tie = 2