Python コード(src/**・scripts/**)を編集するときは本ルールに従うこと.
pyproject.toml の [tool.ruff] に集約する.pyproject.toml の [tool.ruff.lint] で select = ["E", "F", "W", "I", "B", "UP", "N"] を選択する.
| ルール | 内容 |
|---|---|
| E (pycodestyle) | PEP 8 形式エラー |
| F (pyflakes) | 未使用変数・未定義シンボル等 |
| W (pycodestyle) | 形式警告 |
| I (isort) | import 文の並び順 |
| B (flake8-bugbear) | バグになりやすいパターン検出 |
| UP (pyupgrade) | Python 3.12 の機能で書き換え可能なコードの提案 |
| N (pep8-naming) | クラス・関数・変数の命名 |
行長は 100 文字とする.実行コマンドは ENV_04 開発コマンドを参照する.
本プロジェクトの最重要規則.PLAN_01 要件定義書の制約に対応する.
.claude/rules/error-handling.md)print ではなく logging を使う(サーバ実行のログが runs/<実験ID>/log.txt に残るため)config.yaml に記録するcuda:0 を直書きせず設定から受け取る(共用サーバのため GPU 指定が必要)(B, C, H, W)).形状の取り違えは ML コードの主要なバグ源であるtorch.Tensor・np.ndarray は型だけでは情報が足りないため,要素型と形状を docstring で補う静的型チェック(mypy / pyright)は当面導入しない.必要が出てから追加する.
Args: / Returns: / Raises:)に統一例:
import torch
def normalize_batch(images: torch.Tensor, mean: torch.Tensor, std: torch.Tensor) -> torch.Tensor:
"""バッチ画像を ImageNet の統計で正規化する.
Args:
images: 入力画像(`(B, 3, H, W)`, float32, 値域 0.0〜1.0).
mean: チャンネルごとの平均(`(3,)`).
std: チャンネルごとの標準偏差(`(3,)`).
Returns:
正規化後の画像(`(B, 3, H, W)`, float32).
"""
ruff N ルールでチェックする.
| 対象 | スタイル | 例 |
|---|---|---|
| モジュール | snake_case | manifest.py・patient_split.py |
| パッケージ | snake_case | tias_judge_model |
| 関数・変数 | snake_case | load_manifest・macro_f1 |
| クラス | PascalCase | TongueColorDataset・TrainConfig |
| 定数 | UPPER_SNAKE_CASE | CLASS_SLUGS |
| プライベート | 接頭辞 _ | _validate_manifest |
# TODO(rintoHasegawa): 内容 形式で記述するruff I で自動整列する.手動整列は不要.
torch・timm・numpy 等)from tias_judge_model import ...)--config を主とする)argparse 標準を使用する