mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-10-27 03:22:55 +00:00
Fix type annotations to adhere to latest pyright release
This commit is contained in:
@@ -59,7 +59,7 @@ BotT = TypeVar('BotT', bound=_Bot, covariant=True)
|
||||
ContextT_co = TypeVar('ContextT_co', bound='Context[Any]', covariant=True)
|
||||
|
||||
|
||||
class Check(Protocol[ContextT_co]):
|
||||
class Check(Protocol[ContextT_co]): # type: ignore # TypeVar is expected to be invariant
|
||||
|
||||
predicate: Callable[[ContextT_co], Coroutine[Any, Any, bool]]
|
||||
|
||||
|
||||
@@ -460,8 +460,7 @@ class BotBase(GroupMixin[None]):
|
||||
if len(data) == 0:
|
||||
return True
|
||||
|
||||
# type-checker doesn't distinguish between functions and methods
|
||||
return await discord.utils.async_all(f(ctx) for f in data) # type: ignore
|
||||
return await discord.utils.async_all(f(ctx) for f in data)
|
||||
|
||||
async def is_owner(self, user: User, /) -> bool:
|
||||
"""|coro|
|
||||
|
||||
@@ -35,7 +35,7 @@ from .view import StringView
|
||||
from ._types import BotT
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing_extensions import Self, ParamSpec
|
||||
from typing_extensions import Self, ParamSpec, TypeGuard
|
||||
|
||||
from discord.abc import MessageableChannel
|
||||
from discord.guild import Guild
|
||||
@@ -77,6 +77,10 @@ else:
|
||||
P = TypeVar('P')
|
||||
|
||||
|
||||
def is_cog(obj: Any) -> TypeGuard[Cog]:
|
||||
return hasattr(obj, '__cog_commands__')
|
||||
|
||||
|
||||
class DeferTyping:
|
||||
def __init__(self, ctx: Context[BotT], *, ephemeral: bool):
|
||||
self.ctx: Context[BotT] = ctx
|
||||
@@ -526,7 +530,7 @@ class Context(discord.abc.Messageable, Generic[BotT]):
|
||||
await cmd.prepare_help_command(self, entity.qualified_name)
|
||||
|
||||
try:
|
||||
if hasattr(entity, '__cog_commands__'):
|
||||
if is_cog(entity):
|
||||
injected = wrap_callback(cmd.send_cog_help)
|
||||
return await injected(entity)
|
||||
elif isinstance(entity, Group):
|
||||
|
||||
@@ -234,6 +234,7 @@ class MemberConverter(IDConverter[discord.Member]):
|
||||
guild = ctx.guild
|
||||
result = None
|
||||
user_id = None
|
||||
|
||||
if match is None:
|
||||
# not a mention...
|
||||
if guild:
|
||||
@@ -247,7 +248,7 @@ class MemberConverter(IDConverter[discord.Member]):
|
||||
else:
|
||||
result = _get_from_guilds(bot, 'get_member', user_id)
|
||||
|
||||
if result is None:
|
||||
if not isinstance(result, discord.Member):
|
||||
if guild is None:
|
||||
raise MemberNotFound(argument)
|
||||
|
||||
@@ -1182,7 +1183,7 @@ async def _actual_conversion(ctx: Context[BotT], converter: Any, argument: str,
|
||||
except CommandError:
|
||||
raise
|
||||
except Exception as exc:
|
||||
raise ConversionError(converter, exc) from exc
|
||||
raise ConversionError(converter, exc) from exc # type: ignore
|
||||
|
||||
try:
|
||||
return converter(argument)
|
||||
|
||||
@@ -354,8 +354,8 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
def __init__(
|
||||
self,
|
||||
func: Union[
|
||||
Callable[Concatenate[CogT, ContextT, P], Coro[T]],
|
||||
Callable[Concatenate[ContextT, P], Coro[T]],
|
||||
Callable[Concatenate[CogT, Context[Any], P], Coro[T]],
|
||||
Callable[Concatenate[Context[Any], P], Coro[T]],
|
||||
],
|
||||
/,
|
||||
**kwargs: Any,
|
||||
@@ -399,7 +399,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
except AttributeError:
|
||||
checks = kwargs.get('checks', [])
|
||||
|
||||
self.checks: List[UserCheck[ContextT]] = checks
|
||||
self.checks: List[UserCheck[Context[Any]]] = checks
|
||||
|
||||
try:
|
||||
cooldown = func.__commands_cooldown__
|
||||
@@ -479,7 +479,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
|
||||
self.params: Dict[str, Parameter] = get_signature_parameters(function, globalns)
|
||||
|
||||
def add_check(self, func: UserCheck[ContextT], /) -> None:
|
||||
def add_check(self, func: UserCheck[Context[Any]], /) -> None:
|
||||
"""Adds a check to the command.
|
||||
|
||||
This is the non-decorator interface to :func:`.check`.
|
||||
@@ -500,7 +500,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
|
||||
self.checks.append(func)
|
||||
|
||||
def remove_check(self, func: UserCheck[ContextT], /) -> None:
|
||||
def remove_check(self, func: UserCheck[Context[Any]], /) -> None:
|
||||
"""Removes a check from the command.
|
||||
|
||||
This function is idempotent and will not raise an exception
|
||||
@@ -1249,7 +1249,7 @@ class Command(_BaseCommand, Generic[CogT, P, T]):
|
||||
# since we have no checks, then we just return True.
|
||||
return True
|
||||
|
||||
return await discord.utils.async_all(predicate(ctx) for predicate in predicates) # type: ignore
|
||||
return await discord.utils.async_all(predicate(ctx) for predicate in predicates)
|
||||
finally:
|
||||
ctx.command = original
|
||||
|
||||
@@ -1448,7 +1448,7 @@ class GroupMixin(Generic[CogT]):
|
||||
def command(
|
||||
self: GroupMixin[CogT],
|
||||
name: str = ...,
|
||||
cls: Type[CommandT] = ...,
|
||||
cls: Type[CommandT] = ..., # type: ignore # previous overload handles case where cls is not set
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> Callable[
|
||||
@@ -1508,7 +1508,7 @@ class GroupMixin(Generic[CogT]):
|
||||
def group(
|
||||
self: GroupMixin[CogT],
|
||||
name: str = ...,
|
||||
cls: Type[GroupT] = ...,
|
||||
cls: Type[GroupT] = ..., # type: ignore # previous overload handles case where cls is not set
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> Callable[
|
||||
@@ -1700,7 +1700,7 @@ def command(
|
||||
@overload
|
||||
def command(
|
||||
name: str = ...,
|
||||
cls: Type[CommandT] = ...,
|
||||
cls: Type[CommandT] = ..., # type: ignore # previous overload handles case where cls is not set
|
||||
**attrs: Any,
|
||||
) -> Callable[
|
||||
[
|
||||
@@ -1770,7 +1770,7 @@ def group(
|
||||
@overload
|
||||
def group(
|
||||
name: str = ...,
|
||||
cls: Type[GroupT] = ...,
|
||||
cls: Type[GroupT] = ..., # type: ignore # previous overload handles case where cls is not set
|
||||
**attrs: Any,
|
||||
) -> Callable[
|
||||
[
|
||||
@@ -1878,9 +1878,9 @@ def check(predicate: UserCheck[ContextT], /) -> Check[ContextT]:
|
||||
The predicate to check if the command should be invoked.
|
||||
"""
|
||||
|
||||
def decorator(func: Union[Command, CoroFunc]) -> Union[Command, CoroFunc]:
|
||||
def decorator(func: Union[Command[Any, ..., Any], CoroFunc]) -> Union[Command[Any, ..., Any], CoroFunc]:
|
||||
if isinstance(func, Command):
|
||||
func.checks.append(predicate)
|
||||
func.checks.append(predicate) # type: ignore
|
||||
else:
|
||||
if not hasattr(func, '__commands_checks__'):
|
||||
func.__commands_checks__ = []
|
||||
|
||||
@@ -61,7 +61,6 @@ if TYPE_CHECKING:
|
||||
|
||||
from ._types import (
|
||||
UserCheck,
|
||||
ContextT,
|
||||
BotT,
|
||||
_Bot,
|
||||
)
|
||||
@@ -378,7 +377,7 @@ class HelpCommand:
|
||||
bot.remove_command(self._command_impl.name)
|
||||
self._command_impl._eject_cog()
|
||||
|
||||
def add_check(self, func: UserCheck[ContextT], /) -> None:
|
||||
def add_check(self, func: UserCheck[Context[Any]], /) -> None:
|
||||
"""
|
||||
Adds a check to the help command.
|
||||
|
||||
@@ -398,7 +397,7 @@ class HelpCommand:
|
||||
|
||||
self._command_impl.add_check(func)
|
||||
|
||||
def remove_check(self, func: UserCheck[ContextT], /) -> None:
|
||||
def remove_check(self, func: UserCheck[Context[Any]], /) -> None:
|
||||
"""
|
||||
Removes a check from the help command.
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ def make_converter_transformer(converter: Any, parameter: Parameter) -> Type[app
|
||||
except CommandError:
|
||||
raise
|
||||
except Exception as exc:
|
||||
raise ConversionError(converter, exc) from exc
|
||||
raise ConversionError(converter, exc) from exc # type: ignore
|
||||
|
||||
return type('ConverterTransformer', (app_commands.Transformer,), {'transform': classmethod(transform)})
|
||||
|
||||
@@ -400,10 +400,10 @@ class HybridAppCommand(discord.app_commands.Command[CogT, P, T]):
|
||||
if not ret:
|
||||
return False
|
||||
|
||||
if self.checks and not await async_all(f(interaction) for f in self.checks): # type: ignore
|
||||
if self.checks and not await async_all(f(interaction) for f in self.checks):
|
||||
return False
|
||||
|
||||
if self.wrapped.checks and not await async_all(f(ctx) for f in self.wrapped.checks): # type: ignore
|
||||
if self.wrapped.checks and not await async_all(f(ctx) for f in self.wrapped.checks):
|
||||
return False
|
||||
|
||||
return True
|
||||
@@ -468,7 +468,7 @@ class HybridCommand(Command[CogT, P, T]):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
func: CommandCallback[CogT, ContextT, P, T],
|
||||
func: CommandCallback[CogT, Context[Any], P, T],
|
||||
/,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
@@ -838,10 +838,10 @@ def hybrid_command(
|
||||
If the function is not a coroutine or is already a command.
|
||||
"""
|
||||
|
||||
def decorator(func: CommandCallback[CogT, ContextT, P, T]):
|
||||
def decorator(func: CommandCallback[CogT, ContextT, P, T]) -> HybridCommand[CogT, P, T]:
|
||||
if isinstance(func, Command):
|
||||
raise TypeError('Callback is already a command.')
|
||||
return HybridCommand(func, name=name, with_app_command=with_app_command, **attrs)
|
||||
return HybridCommand(func, name=name, with_app_command=with_app_command, **attrs) # type: ignore # ???
|
||||
|
||||
return decorator
|
||||
|
||||
|
||||
Reference in New Issue
Block a user