[tool.poetry] name = "bot" version = "1.0.0" description = "The community bot for the Python Discord community." authors = ["Python Discord "] license = "MIT" [tool.poetry.dependencies] python = "3.11.*" # See https://bot-core.pythondiscord.com/ for docs. pydis_core = { version = "9.6.0", extras = ["async-rediscache"] } aiohttp = "3.8.4" arrow = "1.2.3" beautifulsoup4 = "4.12.2" colorama = { version = "0.4.6", markers = "sys_platform == 'win32'" } coloredlogs = "15.0.1" deepdiff = "6.3.0" emoji = "2.2.0" feedparser = "6.0.10" lxml = "4.9.2" markdownify = "0.11.6" more-itertools = "9.1.0" python-dateutil = "2.8.2" python-frontmatter = "1.0.0" pyyaml = "6.0" rapidfuzz = "3.0.0" regex = "2023.5.5" sentry-sdk = "1.24.0" tldextract = "3.4.4" pydantic = { version = "1.10.8", extras = ["dotenv"]} [tool.poetry.dev-dependencies] coverage = "7.2.6" httpx = "0.24.1" isort = "5.12.0" pre-commit = "3.3.2" pip-licenses = "4.3.2" pytest = "7.3.1" pytest-cov = "4.0.0" pytest-subtests = "0.11.0" pytest-xdist = "3.3.1" ruff = "0.0.267" taskipy = "1.11.0" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.taskipy.tasks] start = "python -m bot" configure = "python -m botstrap" lint = "pre-commit run --all-files" precommit = "pre-commit install" build = "docker build -t ghcr.io/python-discord/bot:latest -f Dockerfile ." push = "docker push ghcr.io/python-discord/bot:latest" test = "pytest -n auto --ff" retest = "pytest -n auto --lf" test-cov = "pytest -n auto --cov-report= --cov" html = "coverage html" report = "coverage report" isort = "isort ." [tool.coverage.run] branch = true source_pkgs = ["bot"] source = ["tests"] [tool.isort] multi_line_output = 6 order_by_type = false case_sensitive = true combine_as_imports = true line_length = 120 atomic = true [tool.ruff] target-version = "py311" extend-exclude = [".cache"] ignore = [ "ANN002", "ANN003", "ANN101", "ANN102", "ANN204", "ANN206", "ANN401", "B904", "C401", "C408", "D100", "D104", "D105", "D107", "D203", "D212", "D214", "D215", "D301", "D400", "D401", "D402", "D404", "D405", "D406", "D407", "D408", "D409", "D410", "D411", "D412", "D413", "D414", "D416", "D417", "E731", "RET504", "RUF005", "S311", "SIM102", "SIM108", ] line-length = 120 select = ["ANN", "B", "C4", "D", "DTZ", "E", "F", "ISC", "INT", "N", "PGH", "PIE", "Q", "RET", "RSE", "RUF", "S", "SIM", "T20", "TID", "UP", "W"] [tool.ruff.per-file-ignores] "tests/*" = ["ANN", "D"] [tool.pytest.ini_options] # We don't use nose style tests so disable them in pytest. # This stops pytest from running functions named `setup` in test files. # See https://github.com/python-discord/bot/pull/2229#issuecomment-1204436420 addopts = "-p no:nose"