[project] name = "pydis_core" version = "12.0.0" description = "PyDis core provides core functionality and utility to the bots of the Python Discord community." readme = "README.md" authors = [ { name = "Python Discord", email = "info@pythondiscord.com" } ] license = "MIT" license-files = ["LICENSE"] classifiers=[ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", ] keywords = ["bot", "discord", "discord.py"] requires-python = ">=3.11" import-names = ["pydis_core"] dependencies = [ "discord.py~=2.5", "pydantic~=2.6", "statsd~=4.0", "aiodns~=3.1" ] [project.optional-dependencies] async-rediscache = ["async-rediscache~=1.0.0rc2"] fakeredis = ["fakeredis[lua]~=2.0"] all = [ "async-rediscache~=1.0.0rc2", "fakeredis[lua]~=2.0" ] [dependency-groups] dev = [ "taskipy==1.14.1", "python-dotenv==1.2.1" ] test = [ "pytest==8.4.2", "pytest-cov==7.0.0", "pytest-xdist==3.8.0" ] lint = [ "ruff==0.14.4", "pre-commit==4.4.0" ] doc = [ "Sphinx==8.2.3", "gitpython==3.1.45", "sphinx-autodoc-typehints==3.5.2", "furo==2025.9.25", "six==1.17.0", "releases==2.1.1", "sphinx-multiversion==0.2.4", "docstring-parser==0.17.0", "tomli==2.3.0" ] [tool.taskipy.tasks] lint = "pre-commit run --all-files" precommit = "pre-commit install" docs = "sphinx-build -nW -j auto -b html docs docs/build" test = "pytest -n 8 --ff" retest = "pytest -n 8 --lf" [project.urls] Homepage = "https://bot-core.pythondiscord.com/" Documentation = "https://bot-core.pythondiscord.com/" Repository = "https://github.com/python-discord/bot-core" Changelog = "https://bot-core.pythondiscord.com/main/changelog.html" Support = "https://discord.gg/python" [build-system] requires = ["uv_build>=0.9.7,<0.10.0"] build-backend = "uv_build" [tool.uv] required-version = ">=0.9.7" [tool.uv.build-backend] source-exclude = ["tests", "tests.*"] module-root = "" [tool.coverage.run] branch = true source_pkgs = ["pydis_core"] source = ["tests"] [tool.ruff] target-version = "py311" extend-exclude = [".cache"] output-format = "concise" line-length = 120 unsafe-fixes = true [tool.ruff.lint] select = ["ALL"] ignore = [ "A005", "ANN002", "ANN003", "ANN204", "ANN206", "ANN401", "C401", "C408", "C901", "COM812", "CPY001", "D100", "D104", "D105", "D107", "D203", "D212", "D214", "D215", "D301", "DOC501", "DOC502", "D400", "D401", "D402", "D404", "D405", "D406", "D407", "D408", "D409", "D410", "D411", "D412", "D413", "D414", "D416", "D417", "E731", "EM101", "EM102", "G004", "PLE0604", "PLR", "PT009", "RET504", "RUF005", "RUF029", "S311", "S404", "SIM102", "SIM108", "TRY003", ] [tool.ruff.lint.isort] order-by-type = false case-sensitive = true combine-as-imports = true known-first-party = ["dev", "pydis_core", "docs"] [tool.ruff.lint.per-file-ignores] "docs/*" = ["TRY002"] "tests/*" = ["ANN", "D", "S101", "SLF001"]