[tool.poetry] name = "discord-rss-bot" version = "1.0.0" description = "RSS bot for Discord" authors = ["Joakim Hellsén "] [tool.poetry.dependencies] python = "^3.12" apscheduler = "^3.10.4" beautifulsoup4 = "^4.12.3" discord-webhook = "^1.3.1" fastapi = "^0.110.0" httpx = "^0.27.0" jinja2 = "^3.1.4" lxml = "^4.9.4" platformdirs = "^3.11.0" python-dotenv = "^1.0.1" python-multipart = "^0.0.9" reader = "^3.12" tomlkit = "^0.12.0" uvicorn = { extras = ["standard"], version = "^0.29.0" } [tool.poetry.group.dev.dependencies] djlint = "^1.34.1" pre-commit = "^3.7.1" pytest = "^7.4.4" ruff = "^0.4.4" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.djlint] ignore = "D004,D018,J018,T001,J004" profile = "jinja" max_line_length = 120 format_attribute_template_tags = true [tool.ruff] fix = true unsafe-fixes = true preview = true line-length = 120 lint.select = ["ALL"] lint.ignore = [ "ANN201", # Checks that public functions and methods have return type annotations. "ARG001", # Checks for the presence of unused arguments in function definitions. "B008", # Allow Form() as a default value "COM812", # Checks for the absence of trailing commas. "CPY001", # Missing copyright notice at top of file "D100", # Checks for undocumented public module definitions. "D101", # Checks for undocumented public class definitions. "D102", # Checks for undocumented public method definitions. "D104", # Missing docstring in public package. "D105", # Missing docstring in magic method. "D105", # pydocstyle - missing docstring in magic method "D106", # Checks for undocumented public class definitions, for nested classes. "ERA001", # Found commented-out code "FBT003", # Checks for boolean positional arguments in function calls. "FIX002", # Line contains TODO "G002", # Allow % in logging "ISC001", # Checks for implicitly concatenated strings on a single line. "PGH003", # Check for type: ignore annotations that suppress all type warnings, as opposed to targeting specific type warnings. "PLR6301", # Checks for the presence of unused self parameter in methods definitions. "RUF029", # Checks for functions declared async that do not await or otherwise use features requiring the function to be declared async. "TD003", # Checks that a TODO comment is associated with a link to a relevant issue or ticket. ] [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.lint.per-file-ignores] "tests/*" = ["S101", "D103", "PLR2004"] [tool.ruff.lint.mccabe] max-complexity = 15 # Don't judge lol [tool.pytest.ini_options] log_cli = true log_cli_level = "DEBUG" log_cli_format = "%(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)" log_cli_date_format = "%Y-%m-%d %H:%M:%S"