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 文字(Mitsuba API や数式リテラルが長くなりがちなため).
実行コマンド:
uv run ruff check . # 検査のみ uv run ruff check . --fix # 自動修正 uv run ruff format . # フォーマット適用
Any または np.ndarray でフォールバック可例:
import numpy as np
def to_grayscale(image: np.ndarray) -> np.ndarray:
"""RGB → 輝度変換...."""
...
静的型チェック(mypy / pyright)は当面導入しない.必要が出てから追加.
Args: / Returns: / Raises:)に統一$Y = 0.2126 R + ...$)を許可[1] を残し,参考文献は同モジュールの末尾コメントまたは docstring 末尾に列挙例:
def to_grayscale(image: np.ndarray) -> np.ndarray:
"""RGB 画像を Rec.709 輝度係数でグレースケールに変換する [1].
$Y = 0.2126 R + 0.7152 G + 0.0722 B$
Args:
image: 入力 RGB 画像(H x W x 3, uint8).
Returns:
輝度画像(H x W, float64, 値域 0.0〜255.0).
References:
[1] ITU-R BT.709
"""
ruff N ルールでチェック.
| 対象 | スタイル | 例 |
|---|---|---|
| モジュール | snake_case | uniformity.py, scene_builder.py |
| パッケージ | snake_case | sm_tias_lightsim |
| 関数・変数 | snake_case | to_grayscale, roi_image |
| クラス | PascalCase | SceneBuilder, LedLight |
| 定数 | UPPER_SNAKE_CASE | REC709_COEFF_R |
| プライベート | 接頭辞 _ | _validate_roi |
# TODO(rintoHasegawa): 内容 形式で記述する.ruff I で自動整列.以下の順:
mitsuba, numpy, trimesh 等)from sm_tias_lightsim import ...)手動整列不要.
--scene を主,-s は併用)argparse 標準を使用.claude/rules/error-handling.md に定義する(src/**・scripts/** 編集時に自動ロードされる).