diff --git a/pyproject.toml b/pyproject.toml index 7ab6dae..8071f27 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,44 +3,55 @@ name = "anewdawn" version = "0.1.0" description = "My shit bot" readme = "README.md" -requires-python = ">=3.12" +requires-python = ">=3.13" dependencies = ["discord-py", "openai", "python-dotenv"] -[tool.ruff] -# https://docs.astral.sh/ruff/ -line-length = 120 -fix = true -unsafe-fixes = true -extend-exclude = [".venv"] -show-fixes = true +[dependency-groups] +dev = ["ruff"] -[tool.ruff.lint] +[tool.ruff] # https://docs.astral.sh/ruff/linter/ preview = true -select = ["ALL"] -ignore = [ + +# Enable all rules +lint.select = ["ALL"] + +# Ignore some rules +lint.ignore = [ "CPY001", # Checks for the absence of copyright notices within Python files. "D100", # Checks for undocumented public module definitions. - "FIX002", # Checks for "TODO" comments. "D104", # Checks for undocumented public package definitions. + "D106", # Checks for undocumented public class definitions, for nested classes. + "ERA001", # Checks for commented-out Python code. + "FIX002", # Checks for "TODO" comments. + + # Conflicting lint rules when using Ruff's formatter # https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules - "W191", - "E111", - "E114", - "E117", - "D206", - "D300", - "Q000", - "Q001", - "Q002", - "Q003", - "COM812", - "COM819", - "ISC001", - "ISC002", + "COM812", # Checks for the absence of trailing commas. + "COM819", # Checks for the presence of prohibited trailing commas. + "D206", # Checks for docstrings that are indented with tabs. + "D300", # Checks for docstrings that use '''triple single quotes''' instead of """triple double quotes""". + "E111", # Checks for indentation with a non-multiple of 4 spaces. + "E114", # Checks for indentation of comments with a non-multiple of 4 spaces. + "E117", # Checks for over-indented code. + "ISC001", # Checks for implicitly concatenated strings on a single line. + "ISC002", # Checks for implicitly concatenated strings that span multiple lines. + "Q000", # Checks for inline strings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.inline-quotes option. + "Q001", # Checks for multiline strings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.multiline-quotes setting. + "Q002", # Checks for docstrings that use single quotes or double quotes, depending on the value of the lint.flake8-quotes.docstring-quotes setting. + "Q003", # Checks for strings that include escaped quotes, and suggests changing the quote style to avoid the need to escape them. + "W191", # Checks for indentation that uses tabs. ] -pydocstyle.convention = "google" -isort.required-imports = ["from __future__ import annotations"] + +# Default is 88 characters +line-length = 120 + +# https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html +lint.pydocstyle.convention = "google" + +# Add "from __future__ import annotations" to all files +lint.isort.required-imports = ["from __future__ import annotations"] + pycodestyle.ignore-overlong-task-comments = true [tool.ruff.format] @@ -48,11 +59,11 @@ pycodestyle.ignore-overlong-task-comments = true docstring-code-format = true docstring-code-line-length = 20 -[tool.uv.workspace] -members = ["anewdawn"] - -[dependency-groups] -dev = ["ruff>=0.8.0"] - [tool.ruff.lint.per-file-ignores] -"tests/**/*.py" = ["S101", "ARG", "FBT"] +"**/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 +]