[tool.poetry] name = "twitch-drop-notifier" version = "0.1.0" description = "" authors = ["Joakim Hellsén "] readme = "README.md" package-mode = false [tool.poetry.dependencies] python = "^3.12" discord-webhook = "^1.3.1" django = { version = "^5.1", allow-prereleases = true } django-debug-toolbar = "^4.4.6" django-simple-history = "^3.7.0" pillow = "^10.4.0" platformdirs = "^4.2.2" python-dotenv = "^1.0.1" requests = "^2.32.3" requests-cache = "^1.2.1" sentry-sdk = { extras = ["django"], version = "^2.13.0" } undetected-playwright-patch = "^1.40.0.post1700587210000" whitenoise = { extras = ["brotli"], version = "^6.7.0" } [tool.poetry.group.dev.dependencies] djlint = "^1.34.1" pre-commit = "^3.8.0" pytest = "^8.3.2" pytest-django = "^4.8.0" ruff = "^0.5.1" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.ruff] # https://docs.astral.sh/ruff/settings/ target-version = "py312" fix = true unsafe-fixes = true preview = true lint.select = ["ALL"] line-length = 119 lint.pydocstyle.convention = "google" lint.ignore = [ "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. "D106", # Checks for undocumented public class definitions, for nested classes. "ERA001", # Found commented-out code "FIX002", # Line contains TODO "COM812", # Checks for the absence of trailing commas. "ISC001", # Checks for implicitly concatenated strings on a single line. "DJ001", # Checks nullable string-based fields (like CharField and TextField) in Django models. ] [tool.ruff.lint.per-file-ignores] "**/tests/**" = [ "ARG", # Unused function args -> fixtures nevertheless are functionally relevant... "FBT", # Don't care about booleans as positional arguments in tests, e.g. via @pytest.mark.parametrize() "PLR2004", # Magic value used in comparison, ... "S101", # asserts allowed in tests... "S311", # Standard pseudo-random generators are not suitable for cryptographic purposes ] "**/migrations/**" = [ "RUF012", # Checks for mutable default values in class attributes. ] [tool.djlint] profile = "django" format_attribute_template_tags = true ignore = "H006" # Img tag should have height and width attributes. [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "core.settings" python_files = ["test_*.py"]