[tool.ruff]
target-version = "py313"
lint.select = [
"ALL"
]
lint.ignore = [
"E501", # pycodestyle Error: line-too-long
"D100", # pydocstyle: Missing docstring in public module
"D101", # pydocstyle: Missing docstring in public class
"D102", # pydocstyle: Missing docstring in public method
"D103", # pydocstyle: Missing docstring in public function
"D104", # pydocstyle: Missing docstring in public package
"D105", # pydocstyle: Missing docstring in magic method
"D107", # pydocstyle: Missing docstring in __init__
"D400", # pydocstyle: First line should end with a period
"UP040", # pyupgrade: non-pep695-type-alias # TODO: mypyがPEP 695 type aliasesに対応したら有効にする
"COM812", # flake8-commas: missing-trailing-comma # ruff formatterとコンフリクトする
"ISC001", # flake8-implicit-str-concat: single-line-implicit-string-concatenation # ruff formatterとコンフリクトする
"TD003", # flake8-todos: missing-todo-link # TODO: ある程度モジュールが完成したら有効にする
"FIX002", # flake8-fixme: line-contains-todo # TODO: ある程度モジュールが完成したら有効にする
"ERA001", # eradicate: commented-out-code # TODO: ある程度モジュールが完成したら有効にする
"D203", # (D211と競合)クラス docstring の前に空行を追加しない。
"D212", # (D213と競合)複数行の docstring の最初の行を概要にしない。
"RUF001", # 全角記号など`ambiguous unicode character`を許容
"RUF002", # 全角記号など`ambiguous unicode character`を許容
"RUF003", # 全角記号など`ambiguous unicode character`を許容
"F403", # from module import * を許容
"T20", # flake8-print # TODO print検出したい場合に有効化する。
]
lint.fixable = ["ALL"]
# Exclude a variety of commonly ignored directories.
exclude = [".venv", "venv", "tests/"]
[tool.ruff.lint.flake8-bugbear]
# FastAPI仕様の"B008"対策
extend-immutable-calls = ["fastapi.Depends", "fastapi.params.Depends", "fastapi.Query", "fastapi.params.Query"]
[tool.ruff.lint.pep8-naming]
# pydanticのvalidatorによる"N805"対応
classmethod-decorators = ["classmethod", "pydantic.validator"]