
Ruff 默认会将带尾随逗号的函数参数强制格式化为多行,可通过配置 skip-magic-trailing-comma = true 禁用该行为;同时需同步关闭 isort 的 split-on-trailing-comma 以避免配置冲突。
ruff 默认会将带尾随逗号的函数参数强制格式化为多行,可通过配置 `skip-magic-trailing-comma = true` 禁用该行为;同时需同步关闭 isort 的 `split-on-trailing-comma` 以避免配置冲突。
Ruff 的格式化器(ruff format)遵循“魔法尾随逗号”(magic trailing comma)规则:当函数参数列表末尾存在逗号时,它会主动将参数展开为多行格式,以提升可读性与版本控制友好性。虽然这是有意设计的行为,但在某些团队规范或遗留代码风格中,你可能希望保持单行函数签名(如 def get_foo(a: object, b: tuple, c: int,) -> dict: 不被拆分)。
要彻底禁用此行为,请在项目根目录的 pyproject.toml 中添加以下配置:
[tool.ruff.format] skip-magic-trailing-comma = true [tool.ruff.lint.isort] split-on-trailing-comma = false
✅ 第一行 skip-magic-trailing-comma = true 告诉 Ruff 忽略尾随逗号对格式化的触发作用,从而保留原始单行结构(只要未超出 line-length 限制)。
⚠️ 第二行是必需的协同配置:因为 Ruff 内置的 isort 模块默认启用 split-on-trailing-comma = true,若不显式设为 false,将与 format.skip-magic-trailing-comma 产生逻辑冲突,导致运行时警告(如你遇到的 incompatible with the formatter 提示)。
? 小提示:该配置仅影响格式化(
ruff format),不影响 lint 检查。若你还希望禁止 lint 阶段对尾随逗号的风格建议(例如COM812),可额外添加:[tool.ruff.lint.rules] # 禁用 "trailing comma on function call" 相关警告(可选) ignore = ["COM812"]
完成配置后,重新运行 ruff format myfile.py,你的函数定义将不再被自动拆分为多行,原始紧凑风格得以保留,同时消除警告,确保 CI/CD 和本地开发环境行为一致。

















