This package contains type stubs to provide more precise static types and type inference for discord.py.
pip install discord.py-stubs
NOTE: Because discord.py
uses namespace packages for its extensions, mypy
must be configured to use namespace packages either with the --namespace-packages
command line flag, or by setting namespace_packages = True
in your mypy
configuration file. See the import discovery section of the mypy
documentation for more details.
In most cases, installing this package will enable developers to type check their discord.py bots using mypy out of the box. However, if developers wish to subclass the classes in discord.ext.commands
they will need to follow the mypy
documentation outlining how to use classes that are generic in stubs but not at runtime:
from typing import TYPE_CHECKING
from discord.ext import commands
class MyContext(commands.Context):
...
if TYPE_CHECKING:
Cog = commands.Cog[MyContext]
else:
Cog = commands.Cog
class MyCog(Cog):
...
In order to avoid this issue, developers can use discord-ext-typed-commands
:
from discord.ext import typed_commands
class MyContext(typed_commands.Context):
...
class MyCog(typed_commands.Cog[MyContext]):
...
Make sure you have poetry installed.
poetry install
poetry run pre-commit install --hook-type pre-commit --hook-type post-checkout
At this time, the version number of discord.py-stubs
will follow the version number of discord.py
it corresponds to and append one more version segment that indicates the sequence of releases for the stubs. For instance, if you are using discord.py
version 1.3.4
, you would use discord.py-stubs
version 1.3.4.X
where X
is an integer.